//导入共享数据包
import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

Page({

    //共享数据相关配置
    options: {
        styleIsolation: 'shared'
    },
    
    behaviors: [storeBindingsBehavior],

    //引入需要的共享数据
    storeBindings: {
        store,
        fields: {
            token: 'token',
            userInfo: 'userInfo'
        },
        actions: {

        }
    },

    data: {
      imagePath: '',
      loading: false,
      progress: 0,
      maxSize: 2 * 1024 * 1024 // 限制2MB
    },
  
    // 选择图片（兼容相册和拍照）
    chooseImage() {
      wx.chooseMedia({
        count: 1,
        mediaType: ['image'],
        sourceType: ['album', 'camera'],
        sizeType: ['compressed'], // 优先压缩
        success: (res) => {
          const tempFilePath = res.tempFiles[0].tempFilePath;
          this.setData({ imagePath: tempFilePath });
          this.checkImageSize(tempFilePath);
        },
        fail: (err) => {
          console.error('选择图片失败', err);
          wx.showToast({ title: '选择失败', icon: 'none' });
        }
      });
    },
  
    // 检查图片大小
    checkImageSize(filePath) {
      wx.getFileInfo({
        filePath,
        success: (res) => {
          if (res.size > this.data.maxSize) {
            wx.showModal({
              title: '图片过大',
              content: `图片大小${(res.size / 1024 / 1024).toFixed(1)}MB，请压缩后上传`,
              confirmText: '立即压缩',
              success: (modalRes) => {
                if (modalRes.confirm) this.compressImage(filePath);
              }
            });
          }
        }
      });
    },
  
    // 压缩图片
    compressImage(filePath) {
      wx.showLoading({ title: '压缩中...' });
      wx.compressImage({
        src: filePath,
        quality: 70, // 压缩质量
        success: (res) => {
          this.setData({ imagePath: res.tempFilePath });
          wx.showToast({ title: '压缩成功', icon: 'success' });
        },
        fail: () => {
          wx.showToast({ title: '压缩失败', icon: 'none' });
        },
        complete: () => wx.hideLoading()
      });
    },
  
    // 上传图片到服务器（使用 wx.uploadFile）
    uploadImage() {

      if(!store.token) {
        wx.showToast({ title: '请先登录', icon: 'none' });
        return;
      }

      if (!this.data.imagePath) {
        wx.showToast({ title: '请先选择图片', icon: 'none' });
        return;
      }
  
      this.setData({ loading: true, progress: 0 });
  
      // 模拟进度条动画（实际可删除或替换为真实进度监听）
      const interval = setInterval(() => {
        this.setData({ progress: Math.min(this.data.progress + 5, 90) });
      }, 300);
  
      // 开始上传
      wx.uploadFile({
        url: 'http://localhost:8980/file/upload-image', // 你的域名
        filePath: this.data.imagePath,
        name: 'file', // 与后端 @RequestParam("file") 名称一致
        header: {
            'content-type': 'application/json',
            authentication: store.token
          },
        formData: {
          // 可以添加额外参数，如用户ID等
        },
        success: (uploadRes) => {
          clearInterval(interval);
          this.setData({ progress: 100 });
          console.log(uploadRes)
          const uploadResData = JSON.parse(uploadRes.data); // 解析 JSON 字符串为对象
    
        console.log('上传图片的 URL:', uploadResData.url);
        console.log('缩略图的 URL:', uploadResData.thUrl);
  
          try {
            
            if (uploadResData.url) {
                wx.navigateTo({
                    url: `/pages/detail/detail?url=${uploadResData.url}`
                  });
            } else {
              wx.showToast({ title: uploadRes.data.message || '识别失败', icon: 'none' });
            }
          } catch (e) {
            wx.showToast({ title: '响应解析失败', icon: 'none' });
            console.error('JSON解析失败:', e, uploadRes.data);
          }
        },
        fail: (err) => {
          clearInterval(interval);
          console.error('上传失败', err);
          wx.showToast({ title: '网络错误', icon: 'none' });
        },
        complete: () => {
          this.setData({ loading: false });
        }
      });
    },
  
    // 分享功能（保持不变）
    onShareAppMessage() {
      return {
        title: '智慧虫害识别',
        path: '/pages/mirror/mirror',
        imageUrl: '/assets/share-image.jpg'
      };
    }
  });